#ifndef  UNIXOS_LAUNCHER
#define  UNIXOS_LAUNCHER

#include <linux/types.h>

/*
 * Describe mediante un ID y bytes de conf. a un dispositivo
*/

//Describe un dispositivo
struct device_desc {
	///Tipo del dispositivo, 0 = Termina
	__u8 type;
	///cantidad de colas virtuales que tiene el dispositivo
	__u8 num_vq;
	///Capacidades del dispositivos * 2 Una por el host, potras por el guest
	__u8 feature_len;
	///Cantidad de bits del arregl de configuración
	__u8 config_len;
	///Bytes del Status
	__u8 status;
	__u8 config[0];
};

//Configuración de la cola para los dispositivocs virtuales
struct vqconfig {
	//Cantidad de entradas de la cola
	__u16 num;
	//Numero de l ainterrupcion cuando algo sucede
	__u16 irq;
	///Numero de pagina donde se encuentran los buffers del dispositivos
	__u32 pfn;
};
/*:*/

//Comandos
enum device_req
{
	LHREQ_INITIALIZE, /* + base, pfnlimit, start */
	LHREQ_GETDMA, /* No longer used */
	LHREQ_IRQ, /* + irq */
	LHREQ_BREAK, /* No longer used */
	LHREQ_EVENTFD, /* + address, fd. */
};

/*
 * The alignment to use between consumer and producer parts of vring.
 * x86 pagesize for historical reasons.
 */
#define VRING_ALIGN	4096
#endif
